package jnpf.fico.model.bill;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import jnpf.fico.model.operate.ZcBillOperateMainVo;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @description: 账单详情实体类
 * @author: zhengxiong.jiang
 * @createDate: 2024-10-23
 * @version: 1.0
 */
@Data
public class ZcBillInfoDTO<T> {

    /**
     * 账单主键id
     */
    @TableId("F_ID")
    private String id;

    /**
     * 项目
     */
    @TableField("PROJECT")
    private String project;

    /**
     * 客户名称
     */
    @TableField("CUSTOMER_NAME")
    private String customerName;

    /**
     * 应收编号
     */
    @TableField("PAYMENT_BILL_NO")
    private String billNo;

    /**
     * 应收类型
     */
    @TableField("BILL_SOURCE")
    private Integer billSource;

    /**
     * 收款状态
     */
    @TableField("RECEIPT_STATUS")
    private Integer receiptStatus;

    /**
     * 合同编号
     */
    @TableField("CONTRACT_NO")
    private String contractNo;

    /**
     * 计费开始日期
     */
    @TableField("EXPENSE_START_DATE")
    private Date expenseStartDate;

    /**
     * 计费结束日期
     */
    @TableField("EXPENSE_END_DATE")
    private Date expenseEndDate;

    /**
     * 计费周期
     */
    @TableField("EXPENSE_CYCLE_DATE")
    private String expenseCycleDate;

    /**
     * 应收日期
     */
    @TableField("PLAN_RECEIPT_DATE")
    @JsonFormat( pattern = "yyyy-MM-dd")  // 定制日期格式
    private Date planReceiptDate;

    /**
     * 应收日期yyyy-MM-dd
     */
    private String planReceiptDateStr;

    /**
     * 是否逾期
     */
    @TableField("IS_OVERDUE")
    private Integer isOverdue;

    /**
     * 凭证状态
     */
    @TableField("IS_CERTIFICATE")
    private Integer isCertificate;

    /**
     * 账单备注
     */
    @TableField("BILL_REMARK")
    private String billRemark;

    /**
     * 费用项明细
     **/
    private List<T> zcbillitemList;

    /**
     * 减免列表
     */
    private List<ZcBillOperateMainVo> reduceList;

    /**
     * 退款列表
     */
    private List<ZcBillOperateMainVo> refundList;

    /**
     * 收支列表
     */
    private List<T> szList;

    public ZcBillInfoDTO() {

    }

    public ZcBillInfoDTO(List<T> list) {
        this.zcbillitemList = list;
    }

}
